package com.snowwolf.threademo.demo;

import org.junit.Test;

/**
 * @author: topsnowwolf
 * @description:
 * @date: Create in 2018/12/31 10:43
 * @modified by:
 * @versions：0.1.0
 */
public class ThreadStatus {
    /**
     * start方法和run方法的区别。
     * start:创建了一个线程并让线程执行run方法。此时线程处于可运行状态。
     * run：线程Thread对象的普通方法，就相当于直接调用对象的方法。不会创建一个线程。
     * 所以：启动线程必须使用start方法。启动之后会自动调用run方法。
     */
    @Test
    public void test0(){
        Thread thread = new Thread(()->{
            System.out.println("come in thread!");
        });
        thread.setName("demoThread");
        //        //获取线程的状态
        System.out.println(thread.getState());
//        thread.run();
        thread.start();
        ThreadGroup currentGroup =Thread.currentThread().getThreadGroup();
        int noThreads = currentGroup.activeCount();
        Thread[] lstThreads = new Thread[noThreads];
        currentGroup.enumerate(lstThreads);
        for (int i = 0; i < noThreads; i++)
            System.out.println("线程号：" + i + " = " + lstThreads[i].getName());
        System.out.println(thread.getState());
    }
}
